package com.service;

import com.entity.PropertyMonthlyFinance;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface PropertyMonthlyFinanceService {
    /**
     * 保存物业月度财务信息
     * @param propertyMonthlyFinance 物业月度财务信息
     * @return 保存后的物业月度财务信息
     */
    PropertyMonthlyFinance save(PropertyMonthlyFinance propertyMonthlyFinance);

    /**
     * 根据ID删除物业月度财务信息
     * @param id 物业月度财务信息ID
     */
    void deleteById(Integer id);

    /**
     * 更新物业月度财务信息
     * @param propertyMonthlyFinance 物业月度财务信息
     * @return 更新后的物业月度财务信息
     */
    PropertyMonthlyFinance update(PropertyMonthlyFinance propertyMonthlyFinance);

    /**
     * 根据ID获取物业月度财务信息
     * @param id 物业月度财务信息ID
     * @return 物业月度财务信息
     */
    PropertyMonthlyFinance findById(Integer id);

    /**
     * 获取所有物业月度财务信息
     * @return 物业月度财务信息列表
     */
    List<PropertyMonthlyFinance> findAll();

    /**
     * 分页查询物业月度财务信息
     * @param pageable 分页参数
     * @return 物业月度财务信息分页结果
     */
    Page<PropertyMonthlyFinance> findAll(Pageable pageable);

    /**
     * 根据项目名称模糊查询物业月度财务信息
     * @param projectName 项目名称
     * @param pageable 分页参数
     * @return 物业月度财务信息分页结果
     */
    Page<PropertyMonthlyFinance> findByProjectNameContaining(String projectName, Pageable pageable);
}